package com.sanpu.kxe.rxservice.interfaces;

import com.sanpu.kxe.rxservice.MetaBean;

import java.util.List;
import java.util.Map;

import okhttp3.MultipartBody;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.QueryMap;
import rx.Observable;

/**
 * Description：主界面模块接口定义
 * Created by 薛勇军 on 2018/7/9.
 */

public interface MainService {

    /**
     * 获取个人信息
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/user/userCenter.html")
    Observable<MetaBean> userCenter(@FieldMap Map<String, String> param);

    /**
     * 获取个人配置信息
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/user/userConfig.html")
    Observable<MetaBean> userConfig(@FieldMap Map<String, String> param);

    /**
     * 首页广告
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/index/actAppadlist.html")
    Observable<MetaBean> actAppadlist(@FieldMap Map<String, String> param);

    /**
     * 获取推荐人的信息
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/my/getReferrerUserInfo.html")
    Observable<MetaBean> getReferrerUserInfo(@FieldMap Map<String, String> param);

    /**
     * 修改昵称
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/my/updateNickName.html")
    Observable<MetaBean> updateNickName(@FieldMap Map<String, String> param);

    /**
     * 获取我的微信信息
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/my/getWxInfo.html")
    Observable<MetaBean> getWxInfo(@FieldMap Map<String, String> param);

    /**
     * 上传我的微信信息，有图片的情况
     * @param param 请求参数
     * @return
     */
    @Multipart
    @POST("app/client/my/postWxQrcode.html")
    Observable<MetaBean> postWxQrcode(@QueryMap Map<String, String> param, @Part List<MultipartBody.Part> parts);

    /**
     * 上传我的微信号
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/my/postWxQrcode.html")
    Observable<MetaBean> postWxQrcode(@FieldMap Map<String, String> param);

    /**
     * 获取活动中心
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/promote/getActInfList.html")
    Observable<MetaBean> getActInfList(@FieldMap Map<String, String> param);

    /**
     * 合伙人信息
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/my/partnerInf.html")
    Observable<MetaBean> partnerInf(@FieldMap Map<String, String> param);

    /**
     * 合伙人盟友列表
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/my/partnerAllyList.html")
    Observable<MetaBean> partnerAllyList(@FieldMap Map<String, String> param);

    /**
     * 获取认证信息
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/realnameAuth/getAuthInfo.html")
    Observable<MetaBean> getAuthInfo(@FieldMap Map<String, String> param);

    /**
     * 四要素校验
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/realnameAuth/authentication.html")
    Observable<MetaBean> authentication(@FieldMap Map<String, String> param);

    /**
     * 提交实名认证信息
     * @param param 请求参数
     * @return
     */
    @Multipart
    @POST("app/client/realnameAuth/realNamePicAuth.html")
    Observable<MetaBean> realNamePicAuth(@QueryMap Map<String, String> param, @Part List<MultipartBody.Part> parts);

    /**
     * 上传身份证正反面
     * @param param 请求参数
     * @return
     */
    @Multipart
    @POST("app/client/realnameAuth/uploadIdCardInfo.html")
    Observable<MetaBean> uploadIdCardInfo(@QueryMap Map<String, String> param, @Part List<MultipartBody.Part> parts);

    /**
     * 上传银行卡正反面及手持
     * @param param 请求参数
     * @return
     */
    @Multipart
    @POST("app/client/realnameAuth/uploadBankInfoAndFaceMatch.html")
    Observable<MetaBean> uploadBankInfoAndFaceMatch(@QueryMap Map<String, String> param, @Part List<MultipartBody.Part> parts);

    /**
     * 鉴权四要素加人脸识别
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/realnameAuth/realnameAuthentication.html")
    Observable<MetaBean> realnameAuthentication(@FieldMap Map<String, String> param);

    /**
     * 实名认证（鉴权）
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/realnameAuth/auth.html")
    Observable<MetaBean> auth(@FieldMap Map<String, String> param);

    /**
     * 6.5.6实名认证（活体检测）
     * @param param 请求参数
     * @return
     */
    @Multipart
    @POST("app/client/realnameAuth/liveness.html")
    Observable<MetaBean> liveness(@QueryMap Map<String, String> param, @Part List<MultipartBody.Part> parts);

    /**
     * 积分统计
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/my/pointTotal.html")
    Observable<MetaBean> pointTotal(@FieldMap Map<String, String> param);

    /**
     * 积分明细列表
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/my/pointDetailList.html")
    Observable<MetaBean> pointDetailList(@FieldMap Map<String, String> param);

    /**
     * 消息列表
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/my/messageList.html")
    Observable<MetaBean> messageList(@FieldMap Map<String, String> param);

    /**
     * 消息详情
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/my/messageDetail.html")
    Observable<MetaBean> messageDetail(@FieldMap Map<String, String> param);

    /**
     * 标记消息已读
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/my/markMessageRead.html")
    Observable<MetaBean> markMessageRead(@FieldMap Map<String, String> param);

    /**
     * 分享记录
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/promote/sharingIntegral.html")
    Observable<MetaBean> sharingIntegral(@FieldMap Map<String, String> param);

    /**
     * 首页banner
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/banner/appHomeBanner.html")
    Observable<MetaBean> banner(@FieldMap Map<String, String> param);

    /**
     * 首页banner
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/banner/appHomeNewBanner.html")
    Observable<MetaBean> newBanner(@FieldMap Map<String, String> param);

    /**
     * 首页顶部功能栏
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/index/homePage.html")
    Observable<MetaBean> homePage(@FieldMap Map<String, String> param);

    /**
     * 首页中间功能栏
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/index/findHomeCenter.html")
    Observable<MetaBean> findHomeCenter(@FieldMap Map<String, String> param);

    /**
     * 办理信用卡
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/index/applyCard.html")
    Observable<MetaBean> applyCard(@FieldMap Map<String, String> param);

    /**
     * 今日签到
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/index/userSign.html")
    Observable<MetaBean> userSign(@FieldMap Map<String, String> param);

    /**
     * 卡积分兑换
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/index/integralConvert.html")
    Observable<MetaBean> integralConvert(@FieldMap Map<String, String> param);

    /**
     * 佣金统计
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/income/rebateTotal.html")
    Observable<MetaBean> rebateTotal(@FieldMap Map<String, String> param);

    /**
     * 6.7.7提现签约
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/pay/withdrawSigning.html")
    Observable<MetaBean> withdrawSigning(@FieldMap Map<String, String> param);

    /**
     * 我的团队列表（收益）
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/income/myTeamList.html")
    Observable<MetaBean> myTeamList(@FieldMap Map<String, String> param);

    /**
     * 推广海报朋友圈
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/promote/getPosterList.html")
    Observable<MetaBean> getPosterList(@FieldMap Map<String, String> param);

    /**
     * 增加海报分享次数
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/promote/addShareNum.html")
    Observable<MetaBean> addShareNum(@FieldMap Map<String, String> param);

    /**
     * 地推物料列表（推广）
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/promote/getMaterialList.html")
    Observable<MetaBean> getMaterialList(@FieldMap Map<String, String> param);

    /**
     * 物料详情列表
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/promote/getMaterialDetailsList.html")
    Observable<MetaBean> getMaterialDetailsList(@FieldMap Map<String, String> param);

    /**
     * 获取新闻类型
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/news/getNewsColumns.html")
    Observable<MetaBean> getNewsColumns(@FieldMap Map<String, String> param);

    /**
     * 获取新闻内容
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/news/getNewsList.html")
    Observable<MetaBean> getNewsList(@FieldMap Map<String, String> param);

    /**
     * 记录点击新闻内容
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/news/statisticalClick.html")
    Observable<MetaBean> statisticalClick(@FieldMap Map<String, String> param);

    /**
     * 6.15.1提交了难任务信息
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/task/conmitTask.html")
    Observable<MetaBean> conmitTask(@FieldMap Map<String, String> param);

    /**
     * 6.15.2获取了难任务列表
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/task/getTaskList.html")
    Observable<MetaBean> getTaskList(@FieldMap Map<String, String> param);

    /**
     * 设置支付密码
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/user/setPayPassword.html")
    Observable<MetaBean> setPayPassword(@FieldMap Map<String, String> param);

    /**
     * 获取APP版本信息
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/other/getAppVersionInfo.html")
    Observable<MetaBean> getAppVersionInfo(@FieldMap Map<String, String> param);

    /**
     * 信用卡活动
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/index/creditcardActList.html")
    Observable<MetaBean> creditcardActList(@FieldMap Map<String, String> param);

    /**
     * 邀请好友
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/promote/inviteFriends.html")
    Observable<MetaBean> inviteFriends(@FieldMap Map<String, String> param);

    /**
     * 邀请赚钱
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/promote/inviteMakeMoney.html")
    Observable<MetaBean> inviteMakeMoney(@FieldMap Map<String, String> param);

    /**
     * 全部应用
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/index/findHomeCenterMore.html")
    Observable<MetaBean> findHomeCenterMore(@FieldMap Map<String, String> param);

    /**
     * 个人头像
     * @param param 请求参数
     * @return
     */
    @Multipart
    @POST("app/client/user/uploadUserHeadPortrait.html")
    Observable<MetaBean> uploadUserHeadPortrait(@QueryMap Map<String, String> param, @Part List<MultipartBody.Part> parts);

    /**
     * 推广视频
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/promote/promotionVideo.html")
    Observable<MetaBean> promotionVideo(@FieldMap Map<String, String> param);

    /**
     * 6.10.9推广海报
     * @param param 请求参数
     * @return
     */
    @FormUrlEncoded()
    @POST("app/client/promote/promotionPoster.html")
    Observable<MetaBean> promotionPoster(@FieldMap Map<String, String> param);
}
